怎么计算大数减法 大数相减的方法
大家好,本网站为大家提供优质的、全新的游戏攻略,援助大家更愉悦地、更顺手地玩游戏,走过路过不要错过奥。
在之前,我们已经谈论了如何进行大数加法的计算。此刻,我们将要谈论如何进行大数减法的计算。虽然思路和大数加法类似,但是如故有一些微妙的不同之处。
将数值转为字符串
在Flash程序中,我们可以通过在文本框中输入来得到大数。这时,大数已经被转换成了字符串。需要注意的是,字符串末尾可能会多出一个不行见的空字符,所以在求长度时需要减去1。以下是将大数A和B转换为字符串的示例代码:
```as3
var A:String Text1.text;
var B:String Text2.text;
var j:int A.length - 1;
var k:int B.length - 1;
var len:int j > k ? j : k; //取得最长数位个数
```
处理结果为负数
起首,我们需要裁定数位,保证被减数A大于减数B。若果A的数位少于B,则交换两个数及数位个数。同时,我们需要将结果标记为负数。以下是处理结果为负数的示例代码:
```as3
if (j < k) {
var s:String A;
A B;
B s;
j k;
k j;
sign "-";
} else if (Number(A) < Number(B)) {
s A;
A B;
B s;
s j;
j k;
k s;
sign "-";
}
```
补充数位使两数数位相同
若果两个数的数位不同,我们需要用0在较小的数的最高位前面添加数位,使两个数的数位相同。以下是补充数位的示例代码:
```as3
while (k < j) {
B "0" B;
k ;
}
```
分割字符到数组
与其他语言如VB、C不同的是,大数的最高位在数组的首位。以下是将大数A和B分割为数组X和Y的示例代码:
```as3
var X:Array [];
var Y:Array [];
for (var i:int len; i > 0; i--) {
X[i-1] (i-1); //字符在字符串中最大索引值比个数少1
Y[i-1] (i-1);
}
```
模拟数组对应元素相减
接下来,我们需要模拟数组对应元素相减,并思量可能的退位状况。以下是模拟数组对应元素相减的示例代码:
```as3
var R:Array [];
for (i len; i > 0; i--) {
if (Number(X[i-1]) < Number(Y[i-1])) {
//不够减
if (R[i-2] undefined) {
R[i-2] 0;
}
R[i-2] - 1; //从上位借1
R[i-1] Number(X[i-1]) 10 - Number(Y[i-1]); //借1当10
} else {
R[i-1] Number(X[i-1]) - Number(Y[i-1]); //够减直接减
}
}
```
去掉最高位的0
最后,我们需要去掉结果中最高位的0。以下是去掉最高位的0的示例代码:
```as3
var s:Boolean true; //去掉最高位的0
while (s) {
if (R[0] 0) {
//若果最高位有0
();
} else {
s false; //没有0,退出循环
}
}
```
处理结果为负数的状况
若果结果为负数,我们需要在结果前面添加一个负号。以下是处理结果为负数的示例代码:
```as3
if (sign "-") {
R.unshift("-");
}
```
输出结果
最后,我们可以将结果输出到控制台或者文本框中。以下是将结果输出到控制台的示例代码:
```as3
trace((";"));
```
你也可以将结果输出到文本框中,例如:
```as3
Text3.text (";");
```
这是一个依据实践总结的阅历,肯定原创的方法。期望对你有所援助!
作者:张志晨
日期:2012.5.16
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将即刻删除。
大家注意,牢记持续关注本游戏攻略网站,您的支持是我们最大的动力奥,我们会努力提供全网新的游戏攻略教程,加油。
本创作内容,未授权勿转载,必究权责。
免责说明:本文代表的是网站编辑的观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经确认,因此对本文以及其中全部或者部份内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。